﻿//#define  _CRT_SECURE_NO_WARNINGS 1
//#include<iostream>
//using namespace std;
//
//namespace my
//{
//	template<class T>
//	class auto_ptr
//	{
//	public:
//		auto_ptr(T* ptr)
//			:_ptr(ptr)
//		{}
//		auto_ptr(auto_ptr<T>& sp)
//			:_ptr(sp._ptr)
//		{
//			// 管理权转移 
//			sp._ptr = nullptr;
//		}
//		auto_ptr<T>& operator=(auto_ptr<T>& ap)
//		{
//			// 检测是否为⾃⼰给⾃⼰赋值 
//			if (this != &ap)
//			{
//				// 释放当前对象中资源 
//				if (_ptr)
//					delete _ptr;
//				// 转移ap中资源到当前对象中 
//				_ptr = ap._ptr;
//				ap._ptr = NULL;
//			}
//			return *this;
//		}
//		~auto_ptr()
//		{
//			if (_ptr)
//			{
//				cout << "delete:" << _ptr << endl;
//				delete _ptr;
//			}
//		}
//		// 像指针⼀样使⽤ 
//		T& operator*()
//		{
//			return *_ptr;
//		}
//		T* operator->()
//		{
//			return _ptr;
//		}
//	private:
//		T* _ptr;
//	};
//
//}
//
//int main()
//{
//	my::auto_ptr<int> a = new int(3);
//	my::auto_ptr<int> b = new int(4);
//	a = b;
//	
//	return 0;
//}

#include <iostream>
#include<map>
using namespace std;

int main() {
    int ret = 0;
    map<char, int> m;
    string a, b;
    cin >> a >> b;
    int n1 = a.size();
    int n2 = b.size();
    for (auto e : b)
    {
        if (m.count(e) == 0)
            m.insert({ e,101 });
        else
            m[e]++;
    }
    for (auto e : a)
    {
        if (m.count(e) > 0&&m[e]>100)
        {
            m[e]--;
            ret++;
        }
    }
    std::cout << n1 - ret;
    return 0;
}